home *** CD-ROM | disk | FTP | other *** search
/ SuperHack / SuperHack CD.bin / CODING / CPP / WCLASS95.ZIP / CPPHEAD1.SCT < prev    next >
Encoding:
Text File  |  1995-09-11  |  11.0 KB  |  225 lines

  1. // Class: CLASS_NAME                     //ANSI C++
  2.  
  3. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$CLASS_NAME$_H  //Required for current class
  4.   #define __$CAPITALIZE_ALL$TRUNCATE_EIGHT$CLASS_NAME$_H
  5.  
  6. #ifndef __IOSTREAM_H            //Required for cin and cout
  7.   #include <iostream.h>                 
  8. #endif
  9.  
  10. [                               //Required for base classes
  11. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$BASE_CLASS$_H
  12.   #include "TRUNCATE_EIGHT$BASE_CLASS$.h"
  13. #endif
  14. ]                               
  15.                 
  16. [#include <INCLUDE_FILE>        //Required for include files
  17. ]                               
  18.  
  19. [                               //Required for 1:1 association classes
  20. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$ASSOCIATION_ONE_CLASS$_H
  21.   #include "TRUNCATE_EIGHT$ASSOCIATION_ONE_CLASS.h"
  22. #endif
  23. ]                                                               
  24.  
  25. [                               //Required for 1:1 aggregation (part) classes
  26. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$AGGREGATION_ONE_CLASS$_H
  27.   #include "TRUNCATE_EIGHT$AGGREGATION_ONE_CLASS$.h"
  28. #endif
  29. ]                                                               
  30.  
  31. [                               //Required for 1:M association classes
  32. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$ASSOCIATION_MANY_CLASS$_H
  33.   #include "TRUNCATE_EIGHT$ASSOCIATION_MANY_CLASS$.h"
  34. #endif
  35. ]                                                               
  36.  
  37. [                               //Required for 1:M aggregation (part) classes
  38. #ifndef __$CAPITALIZE_ALL$TRUNCATE_EIGHT$AGGREGATION_MANY_CLASS$_H
  39.   #include "TRUNCATE_EIGHT$AGGREGATION_MANY_CLASS$.h"
  40. #endif
  41. ]
  42.           NO_OUTPUT_BEGIN Use the the CLASS_USER fields for typedef, enum, const declarations NO_OUTPUT_END
  43. CLASS_USER1
  44. CLASS_USER2
  45.  
  46. class CLASS_NAME[NO_RETURN NO_REPEAT: NO_REPEAT public BASE_CLASS ,DELETE_LAST_SYMBOL] CLASS_LIBRARY_BASE_CLASS     
  47. {                       
  48.             
  49.   SELECT_WHEN ATTRIBUTE_ACCESS == private
  50.   [CPP_ATTRIBUTE_STATIC ATTRIBUTE_TYPE ATTRIBUTE_NAME$; //Attribute data member]        
  51.  
  52.             
  53.   [AGGREGATION_ONE_CLASS AGGREGATION_ONE_NAME$; //1:1 aggregation part data member]        
  54.  
  55.             
  56.   [ASSOCIATION_ONE_CLASS$* ASSOCIATION_ONE_NAME$; //1:1 association object data member]      
  57.             
  58.             
  59.   [ASSOCIATION_ONE_CLASS null$ASSOCIATION_ONE_CLASS;// Null association object for association object]      
  60.             
  61.             
  62.   [int AGGREGATION_MANY_NAME$Index; //Index for array of 1:M aggregation part objects]
  63.  
  64.   [                     //1:M aggregation part data member
  65.             //Change C array to C++ collection class with iterator
  66.    AGGREGATION_MANY_CLASS AGGREGATION_MANY_NAME LITERAL_SYMBOL[maxNumberOf$AGGREGATION_MANY_CLASS$s LITERAL_SYMBOL];]   
  67.  
  68.             
  69.   [int ASSOCIATION_MANY_NAME$Index; //Index for array of 1:M association objects] 
  70.     
  71.   [                     //1:M association object data member
  72.             //Change C array to C++ collection class with iterator
  73.    ASSOCIATION_MANY_CLASS$* ASSOCIATION_MANY_NAME LITERAL_SYMBOL[maxNumberOf$ASSOCIATION_MANY_CLASS$s LITERAL_SYMBOL];] 
  74.  
  75.   [                     // Null association object for initialization of association object data member
  76.   ASSOCIATION_MANY_CLASS$ null$ASSOCIATION_MANY_CLASS;]
  77.  
  78.  
  79. SELECT_WHEN OPERATION_ACCESS == private
  80. [  CPP_OPERATION_VIRTUAL CPP_OPERATION_STATIC OPERATION_RETURN_TYPE OPERATION_NAME (CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT CPP_OPERATION_PURE_VIRTUAL  ;
  81.  
  82. protected:
  83. SELECT_WHEN OPERATION_ACCESS == protected
  84. [  CPP_OPERATION_VIRTUAL CPP_OPERATION_STATIC OPERATION_RETURN_TYPE OPERATION_NAME (CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT CPP_OPERATION_PURE_VIRTUAL ;
  85. ]
  86.  
  87. SELECT_WHEN ATTRIBUTE_ACCESS == protected 
  88. [CPP_ATTRIBUTE_STATIC ATTRIBUTE_TYPE ATTRIBUTE_NAME$;]  
  89.  
  90. public:
  91.  
  92.   SELECT_WHEN ATTRIBUTE_ACCESS == public
  93.   [CPP_ATTRIBUTE_STATIC ATTRIBUTE_TYPE ATTRIBUTE_NAME$;]        
  94.  
  95.             //Default constructor alternative to compiler provided default constructor
  96.             //Ensure correct initial values
  97.             //Initialization list has members in the order declared
  98.             //Association object data member pointers initialized to null association object
  99.   CLASS_NAME () SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN NO_REPEAT: ATTRIBUTE_NAME(ATTRIBUTE_INITIAL_VALUE),DELETE_LAST_SYMBOL]
  100.   { 
  101.     [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  102.     [AGGREGATION_MANY_NAME$Index = 0;           //Index for array of 1:M aggregation part objects ]
  103.     [ASSOCIATION_MANY_NAME$Index = 0;           //Index for array of 1:M association objects ]
  104.             //Initialization of array of 1:M association objects to null association objects
  105.     [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ]
  106.   } 
  107.  
  108.             //Constructor with arguments
  109.             //Update to argument list to initialize base class data members, 
  110.             //e.g. (int aNumber) : BaseClass (aNumber)
  111.   CLASS_NAME ( SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN ATTRIBUTE_TYPE a$ATTRIBUTE_NAME,DELETE_LAST_SYMBOL] ) 
  112.     [NO_RETURN NO_REPEAT: BASE_CLASS$() ,DELETE_LAST_SYMBOL] 
  113.   { [AGGREGATION_MANY_NAME$Index = 0;           //Index for array of 1:M aggregation part objects ]
  114.     [ASSOCIATION_MANY_NAME$Index = 0;           //Index for array of 1:M association objects ]
  115.     SELECT_WHEN ATTRIBUTE_IS_NORMAL [ATTRIBUTE_NAME = a$ATTRIBUTE_NAME; ]
  116.     [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]
  117.             //Initialization of array of 1:M association objects to null association objects
  118.     [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ]
  119.   }      
  120.   
  121.     //Copy constructor alternative to compiler provided default copy constructor
  122.     //Copy alternatives for association objects: (1) initialize association object to nullAssociation Object
  123.     //(2) Shallow copy to copy pointers of association objects (3) Deep copy to create new association objects
  124.     //and copy values of association objects
  125.     //Commented out code assigns 1:1 and 1:M association object data member pointers for shallow copy
  126.     //Remove // if you desire to assign pointers    
  127.   CLASS_NAME (const CLASS_NAME$& a$CLASS_NAME ) [NO_RETURN NO_REPEAT: BASE_CLASS (a$CLASS_NAME),DELETE_LAST_SYMBOL]
  128.   { int i = 0;
  129.    [ AGGREGATION_MANY_NAME$Index = 0;           //Index for array of 1:M aggregation part objects ]
  130.    [ ASSOCIATION_MANY_NAME$Index = 0;           //Index for array of 1:M association objects ]
  131.    SELECT_WHEN ATTRIBUTE_IS_NORMAL
  132.    [ ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;]
  133.    [ AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;]  
  134.    [ ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ]     
  135.    [ //ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME; //Commented out shallow copy]
  136.    [ for ( i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  137.    [ for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; //Initialization of pointers to 0 ]
  138.    [ //Commented out shallow copy
  139.    [ //for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ]
  140.   }                                     
  141.  
  142.     //Operator= Assignment Operator alternative to compiler provided default operator=
  143.     //If base class make virtual
  144.     //Assignment alternatives for association objects: (1) initialize association object to nullAssociation Object
  145.     //(2) Shallow copy to copy pointers to association objects (3) Deep copy to create new association objects
  146.     //and copy values of association objects
  147.     //Commented out code assigns 1:1 association object data member pointers for shallow copy 
  148.     //Remove // if you desire to assign association object pointers for shallow copy    
  149.   CLASS_NAME& operator= (const CLASS_NAME$& a$CLASS_NAME);
  150.  
  151.             //Operator== Equality Operator - No compiler default operator== generated
  152.             //If base class make virtual
  153.             //Update to access 1:1 association object data members
  154.             //Function does not compare 1:1 and 1:M association object data member pointers 
  155.   int operator== (const CLASS_NAME$& a$CLASS_NAME) const;
  156.     
  157.             //Operator<< for cout
  158.   friend ostream& operator<< (ostream& os, CLASS_NAME$& a$CLASS_NAME);
  159.  
  160.             //Operator>> for cin
  161.   friend istream& operator>> (istream& is, CLASS_NAME$& a$CLASS_NAME);
  162.                 
  163. SELECT_WHEN ATTRIBUTE_IS_NORMAL                 
  164. [                       //Get accessor function for non-static attribute data member
  165.   ATTRIBUTE_TYPE get$ATTRIBUTE_NAME$() const
  166.   { return ATTRIBUTE_NAME$;
  167.   }
  168. ]                       
  169.  
  170. SELECT_WHEN ATTRIBUTE_IS_NORMAL                 
  171. [                       //Set accessor function for non-static attribute data member
  172.   void set$ATTRIBUTE_NAME (const ATTRIBUTE_TYPE a$ATTRIBUTE_NAME$)
  173.   { ATTRIBUTE_NAME = a$ATTRIBUTE_NAME$;
  174.   }
  175. ]       
  176.  
  177. SELECT_WHEN ATTRIBUTE_IS_STATIC                 
  178. [                       //Get accessor function for static attribute data member
  179.   static ATTRIBUTE_TYPE get$ATTRIBUTE_NAME$()
  180.   { return ATTRIBUTE_NAME$;
  181.   }
  182. ]                       
  183.  
  184. SELECT_WHEN ATTRIBUTE_IS_STATIC                 
  185. [                       //Set accessor function for static attribute data member
  186.   static void set$ATTRIBUTE_NAME ( ATTRIBUTE_TYPE a$ATTRIBUTE_NAME$)
  187.   { ATTRIBUTE_NAME = a$ATTRIBUTE_NAME$;
  188.   }
  189. ]                       
  190.  
  191. [                       //Get accessor function for 1:1 aggregation part data member
  192.   AGGREGATION_ONE_CLASS$& get$AGGREGATION_ONE_CLASS$() 
  193.   { return AGGREGATION_ONE_NAME$;
  194.   }
  195. ]                       
  196.             
  197. [                       //Set accessor function for 1:1 aggregation part data member
  198.   void set$AGGREGATION_ONE_CLASS (AGGREGATION_ONE_CLASS$& a$AGGREGATION_ONE_NAME$)
  199.   { AGGREGATION_ONE_NAME = a$AGGREGATION_ONE_NAME$;
  200.   }
  201. ]
  202.  
  203. [                       //Get accessor function for 1:1 association object data member
  204.   ASSOCIATION_ONE_CLASS$* get$ASSOCIATION_ONE_CLASS$() const
  205.   { return ASSOCIATION_ONE_NAME$;
  206.   }
  207. ]                       
  208.             
  209. [                       //Set accessor function for 1:1 association object data member
  210.   void set$ASSOCIATION_ONE_CLASS ($ASSOCIATION_ONE_CLASS$* a$ASSOCIATION_ONE_NAME$)
  211.   { ASSOCIATION_ONE_NAME = a$ASSOCIATION_ONE_NAME$;
  212.   }
  213. ]
  214.  
  215. SELECT_WHEN OPERATION_ACCESS == public
  216. [ CPP_OPERATION_VIRTUAL CPP_OPERATION_STATIC OPERATION_RETURN_TYPE OPERATION_NAME (CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT CPP_OPERATION_PURE_VIRTUAL  ;
  217.  
  218.   OPERATION_CPP_VIRTUAL_BASE_CLASS ~ CLASS_NAME ( ) { }  //Destructor - Delete any pointer data members that used new in constructors 
  219.      //Destructor should be virtual if and only if class contains at least one virtual function
  220.      //Objects destroyed in the reverse order ot the construction order
  221. };
  222.  
  223. #endif